package com.gupao.alg.alg0;

import java.util.ArrayList;
import java.util.List;

public class Topic_2_1_YangHuiPrintLastRow {
    /**
     * yanghui三角，只打印最后一行
     * @param args
     */
    public static void main(String args[]) {

//        List<Integer> yanghui = null;
//        yanghui = generate1(7);
//
//
//        for (int i = 0; i < yanghui.size(); i++) {
//            System.out.print(yanghui.get(i) + " ");
//        }

        List<Integer> yanghui = generate(6);
        for (int i = 0; i < yanghui.size(); i++) {
            System.out.print(yanghui.get(i) + " ");
        }
    }

    /**
     *  我们采用如下的方法来模拟生成杨辉三角
     * @param numRows
     * @return
     */
    public static List<Integer> generate1(int numRows) {

        List<List<Integer>> triangle = new ArrayList<>();

        for (int row = 0; row < numRows; row++) {
            List<Integer> numbers = new ArrayList<>();
            for (int column = 0; column <= row; column++) {
                if (column == 0 || column == row) {
                    numbers.add(1);
                } else {
                    numbers.add(triangle.get(row - 1).get(column - 1) + triangle.get(row - 1).get(column));
                }
            }

            triangle.add(numbers);
        }

        return triangle.get(numRows - 1);
    }

    public static  List<Integer> generate(int rowIndex) {
        List<Integer> row = new ArrayList<Integer>();
        row.add(1);
        for (int i = 1; i <= rowIndex; ++i) {
            row.add(0);
            for (int j = i; j > 0; --j) {
                row.set(j, row.get(j) + row.get(j - 1));
            }
        }
        return row;
    }
}

